widget: root child before emitting child observer signals
authorTimm Bäder <mail@baedert.org>
Thu, 19 Nov 2020 11:00:40 +0000 (12:00 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 30 Nov 2020 14:21:52 +0000 (09:21 -0500)
Try to avoid the childen_observer signal handlers screwing up internal
state.

Fixes #3364

gtk/gtkwidget.c

index 0b663d98ddcb8bb53738e3abb682bdd81f325fdc..239e9ff929b998f34cf7b1ec74bf5752c1fa1871 100644 (file)
@@ -5776,6 +5776,9 @@ gtk_widget_reposition_after (GtkWidget *widget,
 
   _gtk_widget_update_parent_muxer (widget);
 
+  if (parent->priv->root && priv->root == NULL)
+    gtk_widget_root (widget);
+
   if (parent->priv->children_observer)
     {
       if (prev_previous)
@@ -5784,9 +5787,6 @@ gtk_widget_reposition_after (GtkWidget *widget,
         gtk_list_list_model_item_added (parent->priv->children_observer, widget);
     }
 
-  if (parent->priv->root && priv->root == NULL)
-    gtk_widget_root (widget);
-
   if (prev_parent == NULL)
     g_object_notify_by_pspec (G_OBJECT (widget), widget_props[PROP_PARENT]);